/**
  @file     	DESIGNPATTERN_Adapter.h 
  @brief    	1.When the algorithm to create complex object should be independent of the part of the object, 
                  as well as their assembly;
				2.When construction process must be allowed to construct the object is different;
  @author  	arvin
  @version 	1.0   2012/12/20
 */

#ifndef CXX_DESIGNPATTERN_ADAPTER_H
#define CXX_DESIGNPATTERN_ADAPTER_H

#ifndef CXX_DESIGNPATTERN_TARGETCHINA_H
#include "DESIGNPATTERN_TargetChina.h"
#endif

class AdapteeJapan;
class Adapter : public TargetChina
{
public:
	/**
	* Construction
	*
	* @param AdapteeJapan* pAdapteeJapan
	* @return
	*/
	Adapter(AdapteeJapan* pAdapteeJapan);

	/**
	* Destruction
	*
	* @param VOID
	* @return
	*/
	virtual ~Adapter();

	/**
	* Voltage220V
	*
	* @param VOID
	* @return VOID
	*/
	virtual VOID Voltage220V();

protected:
private:
	/**
	* Construction
	*
	* @param VOID
	* @return
	*/
	Adapter();

	/**
	* Copy Construction
	*
	* @param const Adapter& cAdapter
	* @return
	*/
	Adapter(const Adapter& cAdapter);

	/**
	* Assignment
	*
	* @param const Adapter& cAdapter
	* @return Adapter&
	*/
	Adapter& operator=(const Adapter& cAdapter);

public:
protected:
private:
	AdapteeJapan* m_pAdapteeJapan;
};
#endif	/* >>CXX_DESIGNPATTERN_ADAPTER_H<< */
/* EOF */